package de.gof.ppstool.lagerverwaltung.ui;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.gof.ppstool.lagerverwaltung.ILagerverwaltung;
import de.gof.ppstool.lagerverwaltung.db.Teil;
import de.gof.ppstool.lagerverwaltung.db.TeilNotFoundException;

@ManagedBean(name = LagerverwaltungControllerBean.NAME)
@SessionScoped
public class LagerverwaltungControllerBean implements Serializable {
	private static final long serialVersionUID = 7850008707171542055L;
	final String JSF_LIST_TEILE = "/lagerverwaltung/warenbestand";
	final String PATH_DATA_TABLE_AUFLISTEN_LV = "/lagerverwaltung/warenbestand";
	public static final String NAME = "lv";
	private static final Logger LOGGER = LoggerFactory
			.getLogger(LagerverwaltungControllerBean.class);
	private static final boolean DEBUG = LOGGER.isDebugEnabled();
	private List<Teil> gefundeneTeile;
	private String teilId;
	private Teil teil;
	private UIData tabelleListTeile;
	@ManagedProperty(value = "#{" + ILagerverwaltung.NAME + "}")
	private ILagerverwaltung lv;

	public LagerverwaltungControllerBean() {
		super();
	}

	/**
	 * @return
	 * @throws TeilNotFoundException
	 */
	public String findTeile() {
		if (DEBUG)
			LOGGER.debug("BEGINN findName: " + teilId);

		if (lv == null) {
			System.out.println("Lagerverwaltung ist null");
		} else {
			try {
				gefundeneTeile = lv.findeAlleTeile();
			} catch (TeilNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

		Collections.sort(gefundeneTeile);
		if (DEBUG)
			LOGGER.debug("ENDE findName: " + gefundeneTeile);

		return JSF_LIST_TEILE;
	}

	public Teil getTeil() {
		return teil;
	}

	public void setTeil(Teil teil) {
		this.teil = teil;
	}

	public UIData getTabelleListTeile() {
		return tabelleListTeile;
	}

	public void setTabelleListTeile(UIData tabelleListTeile) {
		this.tabelleListTeile = tabelleListTeile;
	}

	public ILagerverwaltung getLv() {
		return lv;
	}

	public void setLv(ILagerverwaltung lv) {
		this.lv = lv;
	}

	public void setTeilId(String teilId) {
		this.teilId = teilId;
	}

	public String getTeilId() {
		return teilId;
	}

	public List<Teil> getGefundeneTeile() {
		if (gefundeneTeile == null)
			findTeile();

		return gefundeneTeile;
	}

}
